Artificial Intelligence (A.I.) is a very broad research area that focuses on “making computers think like people” and includes disciplines like neural networks, genetic algorithms, decision trees, frame systems, and expert systems. Knowledge representation is the area of A.I. concerned with how knowledge is represented and manipulated. Expert systems use knowledge representation to facilitate the codification of knowledge into a knowledge-base, which can be used for reasoning, i.e., this knowledge-base is operable to process data to infer conclusions. Expert systems are also known as knowledge-based systems and knowledge-based expert systems and are considered applied artificial intelligence. The process of developing with an expert system is knowledge engineering.
Generally speaking, a rule is a logical construct for describing the operations, definitions, conditions, and/or constraints that apply to some predetermined data to achieve a goal. For example, a business rule might state that no credit check is to be performed on return customers.
Typically, a rule engine includes a suite of software modules or components that manages and automates the rules to implement the Expert System. For instance, the rule engine evaluates and fires one or more of the rules based on the evaluation. One advantage of a rule engine is the separation of the rules from the underlaying application code. For many applications, the rules change more frequently than the rest of the application code. With the rules separated from the application code, the rule engine allows the business users to modify the rules frequently without the help of technical staff and hence, allowing the applications to be more adaptable with the dynamic rules.
In general, rules are written in rule languages. However, conventional rule engines are typically not language-independent. In other words, a conventional rule engine typically supports only a limited number of rule languages. To migrate rules written in a rule language to a rule engine that does not support the rule language, the rules have to be manually rewritten in another rule language that is supported by the rule engine. This is a tedious and error-proned process.